package com.zenithmind.chat.pojo.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.zenithmind.common.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 群组设置实体类 - 遵循单一职责原则
 * 专门负责群组的权限设置和管理配置
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("chat_group_setting")
public class ChatGroupSetting extends BaseEntity {

    /**
     * 群组ID
     */
    private String groupId;

    /**
     * 是否允许邀请（0-不允许，1-允许）
     */
    private Integer allowInvite;

    /**
     * 是否需要审核（0-不需要，1-需要）
     */
    private Integer needApproval;

    /**
     * 加入验证（0-不需要，1-需要）
     */
    private Integer joinVerification;

    /**
     * 全员禁言（0-否，1-是）
     */
    private Integer allMuted;

    /**
     * 是否公开（0-私有，1-公开）
     */
    private Integer isPublic;

    /**
     * 允许成员邀请（0-不允许，1-允许）
     */
    private Integer allowMemberInvite;

    /**
     * 最大成员数
     */
    private Integer maxMembers;

    /**
     * 消息保留天数
     */
    private Integer messageRetentionDays;

    /**
     * 群组标签（JSON格式）
     */
    private String tags;

    /**
     * 群公告
     */
    private String announcement;

    /**
     * 公告发布时间
     */
    private LocalDateTime announcementTime;

    /**
     * 公告发布者ID
     */
    private String announcementPublisherId;

    /**
     * 是否允许普通成员修改群名片（0-不允许，1-允许）
     */
    private Integer allowMemberModifyNickname;

    /**
     * 是否允许普通成员@所有人（0-不允许，1-允许）
     */
    private Integer allowMemberMentionAll;

    /**
     * 新成员是否可以查看历史消息（0-不可以，1-可以）
     */
    private Integer allowNewMemberViewHistory;

    /**
     * 群组验证问题
     */
    private String verificationQuestion;

    /**
     * 群组验证答案
     */
    private String verificationAnswer;

    /**
     * 扩展设置（JSON格式）
     */
    private String extraSettings;
}
